// pages/home/home.js
// 爻 yao
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 数据列表
    dataList: '',
    // 答案
    answer:'',
    // 想测的事
    problem:'',
    // 硬币记录列表
    ybls_list:[],
    error: '',
    yiJingJie:'',

    // 卦象
    guaXiang:[
      // 阴 叉 - -
      // 阳 圈 ——
      {
        text:'',
        content:''
      },
  ]
  },
  userNameFn:function (params) {
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // this.diuYingBi()
    let _t = this
    wx.cloud.callFunction({
      name: 'list',//函数名
      data:{ text:'卦象详情'},
      complete: res => {
        console.log('callFunction test result: ',res)
        _t.setData({
          dataList:res.result.data
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },
// 大道五十，天衍四九。遁去其一，是为变数。今，天道已定，合道无望。唯有无常，逆天方成圣。

// 大道五十，实际说的是天地之数的大衍数，所谓大衍，就是演天地之变也就是大道，天地之数55减去天数的中间数5，就是大衍数50，又叫大衍之体数。
// 根据中国传统理论，道生一、一生二、二生三、三生万物，天地宇宙的运行衍化，都可以用数字来表示，数字是无限的。孔子曰：天一地二，天三地四，天五地六，天七地八，天九地十。天数五，地数五，五位相得而各有合。天数二十有五，地数三十，凡天地之数，五十有五，此所以成变化而行鬼神也。简单的说，天数为1、3、5、7、9，地数为2、4、6、8、10。天数有五个，地数有五个，天数之和是25，地数之和为30，所以天地之数加起来，一共就是55。
// 《易经》有云：“大道五十，天衍四九，人遁其一”。意思就是讲天地之间，事物的运行和发展规律总共有五十，只能衍生出四十九，被遁去的其一便是天机！
  deGua:function() {
    let zheng = ''
    let bian = ''
    function ce() {
      let i = Math.ceil(Math.random() * 500)
      // console.log(i)
      let ifZheng = 0
      if (i <= 490 / 2) {
         ifZheng = 1
      }else{
         ifZheng = 0
      }
      return ifZheng 
    }
    let jieguo1 = ce()
    let jieguo2 = ce()
    let jieguo3 = ce()

    let all = jieguo1 + jieguo2 + jieguo3
    // 老阴
    // 叉叉叉叉叉叉
    if (all == 0) {
      zheng = '叉'
      bian = '圈'
    }
    // 阴爻
    if (all == 1) {
      zheng = '叉'
      bian = '叉'
    }
    // 阳爻
    if (all == 2) {
      zheng = '圈'
      bian = '圈'
    }
    // 老阳
    // 圈圈圈圈圈圈
    if (all == 3) {
      zheng = '圈'
      bian = '叉'
    }

    return {
      zheng,
      bian
    }
  },
  // 添加
  addObj:function() {
    // // 答案
    // answer:'',
    // // 想测的事
    // problem:'',
    // // 硬币记录列表
    // ybls_list:[],
    let {answer,problem,ybls_list} = this.data
    if (answer!='' && problem!='' && ybls_list.length==6) {
      wx.cloud.callFunction({
        name: 'add',//函数名
        data:{ 
          textValue:problem,
          textList:answer,
          ybls_list
        },
        complete: res => {
          console.log(' 添加结果 ',res)
        }
      })
    }
  },
  // 重置
  chongZhi:function(){
    this.setData({
      yiJingJie:'',
      // 答案
      answer:'',
      // 想测的事
      problem:'',
      ybls_list:[]
    })
  },
  diuYingBi:function() {
    let _t = this
    console.log(_t.data)
    if (_t.data.problem=='') {
      this.setData({
        error: '请填写问题'
      })
      return
    }
    let obj =_t.deGua()
    console.log(obj)
    if (_t.data.ybls_list.length < 6) {
      _t.setData({
        ybls_list:[obj,..._t.data.ybls_list]
      })
      console.log(_t.data.ybls_list.length)
    }
  },
  // 变爻
  bianYao:function (gua,yao) {
    let str = ''
    for (const key in gua) {
      if (key == yao) {
        str += gua[key].bian
      }else{
        str += gua[key].zheng
      }
    }
    return str
  },
  // 本卦
  benGua:function (gua) {
    let str = ''
    for (const key in gua) {
        str += gua[key].zheng
    }
    return str
  },
  bianGua:function (gua) {
    let str = ''
    for (const key in gua) {
        str += gua[key].bian
    }
    return str
  },
  // 求结果
  jieGua:function() {
    let _t = this
    if (_t.data.problem=='') {
      this.setData({
        error: '请填写问题'
      })
      return
    }
    if (_t.data.ybls_list.length != 6) {
      this.setData({
          error: '丢六次'
      })
      return
    }
    // 几个变爻
    let numder = 0
    // 变爻 集合
    // 0 下爻 length 上爻
    let bianList = []
    let yuanYaoList = []
    let benGuaList = []
    let ybls_list = _t.data.ybls_list
    for (const iterator in ybls_list) {
      if (ybls_list[iterator].zheng != ybls_list[iterator].bian) {
        numder++
        bianList = [...bianList,_t.bianYao(ybls_list,iterator)]
      }else{
        yuanYaoList = [...yuanYaoList,_t.bianYao(ybls_list,iterator)]
      }
    }
    for (const iterator of this.data.dataList) {
      if (iterator.title == _t.benGua(ybls_list)) {
        this.setData({
          answer: iterator.content
        })
      }
    }
    let str2 = ''
    if (bianList.length == 0) {
      console.log(' 无爻 本卦 ',_t.benGua(ybls_list))
      str2 = '无爻 本卦'
    }
    if (bianList.length == 1) {
      console.log(' 一爻 变爻的爻辞 ',bianList[0])
      str2 = '一爻 变爻的爻辞'
    }
    if (bianList.length == 2) {
      console.log(' 二爻 上爻的爻词为主 下爻辅 ',bianList[1],bianList[0])
      str2 = ' 二爻 上爻的爻词为主 下爻辅 '
    }
    if (bianList.length == 3) {
      console.log(' 三爻 本卦的卦词为主，变卦的卦词为辅 ',_t.benGua(ybls_list),_t.bianGua(ybls_list))
      str2 = ' 三爻 本卦的卦词为主，变卦的卦词为辅 '
    }
    if (bianList.length == 4) {
      console.log(' 四爻 两个没变的爻的爻词，以下爻的爻词为主 ',yuanYaoList[0],yuanYaoList[1])
      str2 = ' 四爻 两个没变的爻的爻词，以下爻的爻词为主 '
    }
    if (bianList.length == 5) {
      console.log(' 五爻 本卦的变卦，然后用变卦中不变的那个爻的爻词来解释你算的这一卦。 ',yuanYaoList[0],yuanYaoList[1])
      str2 = ' 五爻 本卦的变卦，然后用变卦中不变的那个爻的爻词来解释你算的这一卦。 '
    }
    if (bianList.length == 5) {
      console.log(' 六爻 变卦 ',_t.bianGua(ybls_list))
      str2 = ' 六爻 变卦 '
    }
    this.setData({
      yiJingJie:str2
    })
    // console.log(_t.benGua(ybls_list),bianList)
  },
  /**
   * 用户点击右上角分享
   */
  /**
   * 
   * 卦怎么个算法？
　　“丢硬币”这个过程，专业点的说法叫做“起卦”，起卦的方法五花八门，大仙们各有各的玩法，本文向你推荐的“硬币算卦法”，最为简单，方便易学。
　　OK，一切准备就绪，兄弟们就可以开始了：
　　1、打开钱包，拿出硬币三枚。硬币用文字标了币值的那一面，是正面；国徽或者花卉等图案的一面，是背面。
　　2、找一安静房间老老实实坐下来，态度端正地先净手焚香。
　　3、把三枚硬币用两手合握在手心里，要算什么你一定要想清楚！然后将意念高度集中，默想，使劲默想。
　　4、接下来手开始摇，摇几下后把硬币往地上一丢。猜猜硬币丢出来的结果有几种可能？对了，只有四种：三个都是正面，三个都是背面，二个正面一个背面，一个正面二个背面。
　　5、把结果记下来，以背面，也就是国徽、花卉等图案那一面出现的情况为标准。
　　如果摇出一个背面●○○奇数嘛，为阳，记作阳爻“——”。
　　如果摇出三个背面●●●也是奇数也是阳，但这个数大了点，特殊点，叫老阳，记录的时候要在阳爻的后面打个叉：“——X”。
　　如果摇出两个背面●●○偶数，自然为阴，记作阴爻“－－－－”。
　　如果摇出零个背面○○○算是偶数吧，为阴，也比较特殊，叫老阴，记录的时候要在阴爻的后面打个叉：“－－－－X”。

　　要注意那些后面打叉的老阳和老阴，那可就是大名鼎鼎的变爻，记住，变爻！！！

　　每次摇下来，会摇出来多少变爻是不一定的，为啥叫变爻呢？因为物极必反，老阳会变为“－－”（阴）；老阴要会变为“—”（阳），记住这个变化之道，《易经》的精髓所在。
　　6、一鼓作气连摇六次，把六次摇出来的结果用上面的记法记录在纸上，顺序是从下往上！从下往上记！！！第一次摇出的结果叫做初爻，记录在最底下；第二次摇出的结果为第二爻，记录在初爻上面，依次类推一直记上去，直至把第六次记录完。恭喜你搞定了一卦！你再使点劲记住：这个卦叫做本卦，本来的卦、原来的卦的意思。

　　怎么解卦？
　　丢丢硬币，做做记录，必然会算出个本卦，然后查看变爻——带叉的老阴和老阳。变爻出现的情况不同，则解卦的方法就不同。但变爻的情况无非就以下七种，这就是整个算卦过程里唯一的难点了，要麻烦兄弟们辛苦一下，把下面七点背下来：

　　1、没有变爻：在《易经》中查出本卦的卦辞，根据这个卦词的意思来解释你算的这一卦。
　　2、一个变爻：在《易经》中查出本卦的变爻的爻辞，根据这个爻词的意思来解释你算的这一卦。
　　3、二个变爻：在《易经》中查出本卦的两个变爻的爻辞，根据这两个爻的爻词的意思来解释这一卦，但是要以上爻的爻词为主。
　　4、三个变爻：在《易经》中分别查出本卦和变卦的卦辞，以本卦的卦词为主，变卦的卦词为辅，综合解释你算的这一卦。
　　5、四个变爻：在《易经》中查出本卦中两个没变的爻的爻词，根据这两个爻词的意思，以下爻的爻词为主来解释你算的这一卦。
　　6、五个变爻：在《易经》中查出这个本卦的变卦，然后用变卦中不变的那个爻的爻词来解释你算的这一卦。
　　7、六爻皆变：在《易经》中查出这个本卦的变卦，根据这个变卦卦词的意思来解释你算的这一卦。

　　现在我们来解刚才案例里的这一卦：根据本卦“屯”的变爻，即初九这个“爻”的“爻词”来解。查《易经》，屯卦的初九爻“爻词”为“磐桓，利居贞，利建侯。”翻译成白话为“万事开头难，创业时期困难大，难免彷徨，但只要行为端正，态度执着，便可建功立业。”也就是说毕万此去晋国当官，道路曲折，前途光明。
   * 
   * 
   */
  onShareAppMessage: function () {

  }
})